Traditional methods for creating a song or musical idea include composing the exact sequences of notes for each instrument involved and then playing all the instruments simultaneously. Contemporary advances in music software for computers allow a user to realize musical ideas without playing any instruments. In such applications, software virtualizes the instruments by generating the sounds required for the song or musical piece and plays the generated sounds through the speakers of the computer.
Existing software applications employ a fixed mapping between the high-level parameters and the low-level musical details of the instruments. Such a mapping enables the user to specify a high-level parameter (e.g., a musical genre) to control the output of the instruments. Even though such applications remove the requirement for the user to compose the musical details for each instrument in the composition, the fixed mapping is static, limiting, and non-extensible. For example, with the existing software applications, the user still needs to specify the instruments required, the chord progressions to be used, the structure of song sections, and specific musical sequences in the virtual instruments that sound pleasant when played together with the other instruments. Additionally, the user has to manually replicate the high-level information across all virtual instruments, as there is no unified method to specify the relevant information to all virtual instruments simultaneously. As such, such existing software applications are too complicated for spontaneous experimentation in musical ideas.